package com.yc.tomcat.core;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ParseUrlPattern {
	private static Map<String, String> urlPattern = new HashMap<String, String>();
	public ParseUrlPattern() {
		init();
	}
	private void init() {
		//扫描服务器的所有项目
		File [] fls = new File(ConstantInfo.BASE_PATH).listFiles();
		if(fls == null || fls.length <= 0) {//说明里面没有项目
			return;
		}

		String projectName = ""; //服务器目录下的文件夹名就是项目名
		File webFile = null;

		for(File fl : fls) {
			if(!fl.isDirectory()) {
				continue;
			}

			projectName = fl.getName();

			webFile = new File(fl, "WEB-INF/web.xml");//有没有配置文件
			if(!webFile.exists() || !webFile.isFile()) {//如果配置文件存在或不是一个文件， 则说明该项目是一个静态网站
				continue;
			}
			parseXml(projectName, webFile);
		}
	}
	private void parseXml(String projectName, File webFile) {
		SAXReader reader = new SAXReader();
		Document doc = null;
		try {
			doc = reader.read(webFile);
			@SuppressWarnings("unchecked")
			List<Element> servletList = doc.selectNodes("//servlet");
			if(servletList == null || servletList.isEmpty()) {
				return;
			}
			for(Element servlet : servletList) {
				urlPattern.put("/" + projectName + servlet.selectSingleNode("url-pattern").getText().trim(), servlet.selectSingleNode("servlet-class").getText().trim());
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}

	}
	public static String getClass(String key) {
		return urlPattern.getOrDefault(key, null);
	}
}
